
import networkx as nx
import matplotlib.pyplot as plt

class Map:
  # constantes
  latitude_min  = 42.19
  latitude_max  = 51.5
  longitude_min = 4.46
  longitude_max = 8.14

  def Draw (sets, filename):
    G = nx.Graph ()
    position = {}
    # Building graphs
    for selection in sets :
      G.add_node (selection.producteur.name)
      positions [selection.producteur.name] = ((selection.producteur.latitude - latitude_min) / (latitude_max - latitude_min),
                                               (selection.producteur.longitude - longitude_min) / (longitude_max - longitude_min))
      # colors [selection.producteur.name] = color
      for client in selection.producteur.TabClient :
        G.add_node (client.name)
        G.add_edge (selection.producteur.name, client.name)
        # edge_colors [(selection.producteur.name, client.name)] = color
        positions [client.name] = ((client.latitude - latitude_min) / (latitude_max - latitude_min),
                                   (client.longitude - longitude_min) / (longitude_max - longitude_min))
    
    plt.figure (figsize = (8,8))

    nx.draw_networkx_nodes (G, positions, G.nodes ())
    for selection in sets :
      nx.draw_networkx_edges (G, positions,[(selection.producteur.name, n) for n in G.neighbors(selection.producteur.name)], 80, selection.producteur.color)

    plt.xlim (-0.05, 1.05)
    plt.ylim (-0.05, 1.05)
    plt.axis ('off')
    plt.savefig (filename)
    plt.show ()

